﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace IntelliLance.Math.Parser
{
    /// <summary>
    /// Provides a set of options to be used by the parser.
    /// </summary>
    /// <remarks>The parser uses this class to reflects its behavior.
    /// By default the parser has an already initialized instance of this class loaded with the default settings, you could also initialize
    /// an instance and set its properties, then pass it to the parser's constructor.</remarks>
    public class MathParserOptions
    {
        public readonly static MathParserOptions Default = new MathParserOptions() { IgnoreCase = false , InferVariables = true};
        static MathParserOptions()
        {
            
        }

        /// <summary>
        /// Gets or sets a Boolean value that determines whether the compiler should be case-sensitive or not.
        /// </summary>
        /// <remarks>When this value set to true, the compiler will ignore the case-sensitivity when parsing variables and functions names, for example: if you define a function with the name of "Add", and the compiler
        /// finds a function call expression named "add", it will consider both of them as identical.</remarks>
        /// <value>A Boolean value that specifies whether the compiler should be case-sensitive or not.</value>
        public bool IgnoreCase { get; set; }

        public bool InferVariables { get; set; }
    }
}
